package com.fqdf.framework.android.util;


import java.util.List;
import java.util.Map;
import java.util.Set;

public class CheckLogicUtil {

    // 正则表达式测试邮箱。
    public static final String REGULAR_MAIL = "^[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$";

    // 正则表达式测试手机。
    public static final String REGULAR_PHONE = "^[1][3-8]\\d{9}$";
    // 正则表达式测试电话。
    public static final String REGULAR_TEL = "^\\d{3,4}-\\d{6,9}(-\\d{1,5})?$";

    public static final String REGUAR_CARD_ID = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";

    private CheckLogicUtil() {

    }


    public static boolean isEmpty(String str) {
        return str == null || str.trim().equals("");
    }

    public static boolean isEmpty(Integer i) {
        return i == null || i == 0;
    }

    public static boolean isEmpty(Long l) {
        return l == null || l == 0;
    }

    public static boolean isEmpty(List<?> l) {
        return l == null || l.size() == 0;
    }

    public static boolean isEmpty(Set<?> l) {
        return l == null || l.size() == 0;
    }

    public static boolean isEmpty(Map<?, ?> m) {
        return m == null || m.size() == 0;
    }

    public static boolean isEmpty(int[] data) {
        return data == null || data.length == 0;
    }


    /**
     * 检测是否是合法的手机号码
     *
     * @param emailStr
     * @return
     */
    public static boolean isPhone(String emailStr) {
        if (emailStr == null) {
            return false;
        }

        return emailStr.matches(REGULAR_PHONE);

    }

    /**
     * 检测是否是合法的电话
     *
     * @param emailStr
     * @return
     */
    public static boolean isTel(String emailStr) {
        if (emailStr == null) {
            return false;
        }

        return emailStr.matches(REGULAR_TEL);

    }

    /**
     * 检测是否是合法的邮箱地址
     *
     * @param emailStr
     * @return
     */
    public static boolean isLegalEmail(String emailStr) {
        if (emailStr == null) {
            return false;
        }

        if (emailStr.length() < 4 || emailStr.length() > 50) {
            return false;
        }

        return emailStr.matches(REGULAR_MAIL);

    }

    /**
     * 检测是否是合法的经纬度地址 0的判断为了兼容之前的判断
     *
     * @return
     */
    public static boolean isValidLonLat(double longitude, double latitude) {

        return longitude < 180 && longitude > -180 && latitude > -90 && latitude < 90 && longitude != 0.0 && latitude != 0.0;
    }

    /**
     * 检测是否是合法的经纬度地址
     *
     * @return
     */
    public static boolean isValidLonLat(String longitude, String latitude) {

        if (!isEmpty(longitude) && !isEmpty(latitude)) {
            try {

                return isValidLonLat(Double.parseDouble(longitude), Double.parseDouble(latitude));
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        }
        return false;
    }

    /**
     * 检测是否是合法的经纬度地址
     *
     * @return
     */
//    public static boolean isValidLocation(BDLocation location) {
//
//        if (location != null) {
//            try {
//
//                return isValidLonLat(location.getLongitude(), location.getLatitude());
//            } catch (NumberFormatException e) {
//
//            }
//        }
//        return false;
//    }

}
